#ifndef __DRI_USART1_H__
#define __DRI_USART1_H__

#include <stdio.h>
#include "stm32f10x.h"

/**
 * @brief USART1 初始化
 * 
 */
void Dri_USART1_Init(void);

/**
 * @brief 发送1个字节的数据
 * 
 * @param byte 要发送的字节
 */
void Dri_USART1_TransmitByte(uint8_t byte);

/**
 * @brief 发送多个字节数据
 * 
 * @param bytes 要发送的多个字节
 * @param len 要发送的字节个数
 */
void Dri_USART1_TransmitBytes(uint8_t *bytes, uint8_t len);

/**
 * @brief 接收1个字节的数据
 * 
 * @return uint8_t 返回接收到的字节
 */
uint8_t Dri_USART1_ReceiveByte(void);

/**
 * @brief 接收多个字节数据，也需要在死循环中被轮询调用
 * 
 * @param bytes 将接收的多个字节保存至该地址处
 * @param len 将接收到的字节个数存入该地址处
 */
void Dri_USART1_ReceiveBytes(uint8_t *bytes, uint8_t *len);

/**
 * @brief 开始使用非阻塞方式接收数据，一直接收到检测到空闲状态
 * 
 */
void Dri_USART1_ReceiveBytesITStart(void);

/**
 * @brief 停止非阻塞方式接收数据
 * 
 */
void Dri_USART1_ReceiveBytesITStop(void);

#endif /* __DRI_USART1_H__ */
